package org.zpmis.domain.file.service;



import java.io.InputStream;

/**
 * 文件上传下载服务
 */
public interface FileService {

    /**
     * 创建桶
     * @param bucketName 桶名称
     */
    void createBucket(String bucketName) throws Exception;
    /**
     * 上传文件
     * @param bucketName 桶名
     * @param fileName 文件名
     * @param contentType
     * @param filePath 文件全路径
     * @return 文件名称
     * @throws Exception
     */
    String uploadObject(String bucketName,String fileName, String filePath,String contentType) throws Exception;


    /**
     * 上传文件
     * @param bucketName 桶名
     * @param fileName 文件名
     * @param bytes 文件字节
     * @param contentType
     * @return 文件名
     * @throws Exception
     */
     String  uploadStream(String bucketName,String fileName,byte[] bytes, String contentType) throws Exception;

    /**
     * 下载文件
     * @param fileName 文件名
     * @param downloadFilePath 下载的文件全路径
     * @param bucketName 桶名
     */
     void download(String fileName,String downloadFilePath, String bucketName) throws Exception;

    /**
     * 下载文件
     * @param fileName 文件名
     * @param bucketName 桶名
     * @return
     */
    byte[] get(String fileName, String bucketName) throws Exception;

    /**
     * 去默认桶中获取文件字节
     * @param fileName 文件名
     * @return
     */
    byte[] getFileBytes(String fileName) throws Exception;


    /**
     * 删除文件
     * @param fileName 文件名
     * @param bucketName 桶名
     * @throws Exception
     */
    void remove(String fileName, String bucketName) throws Exception;

}
